package initialize

import (
	"go-likaladi-shop/common/base_config"
	"go-likaladi-shop/common/base_init"
	"google.golang.org/grpc"
	"lw-shop/goods_service/global"
	"lw-shop/goods_service/handler"
	"lw-shop/goods_service/proto"
)

// InitConfig 创建一个默认的 Gin 引擎，初始化日志、相关路由映射
func InitConfig(host string, port int, filePath string) {
	// InitLogger 函数用于初始化日志系统，设置全局日志实例
	base_init.Logger()

	//初始化config.yaml文件配置信息
	base_init.YmlConfig(filePath, global.YamlConfig)

	//创建nacos客户端
	nacosClient := base_init.CreateNacosConnClient(global.YamlConfig.Nacos)
	//通过dataId和group解析nacos文件配置内容映射到对应的struct
	base_init.NacosContentMappingStruct(nacosClient, global.YamlConfig.Nacos.DataId, global.YamlConfig.Nacos.Group, global.NacosConfig)

	//初始化数据库
	base_init.DB(global.NacosConfig.DB)

	//启动 gRPC 服务器 并 将当前服务 注册到 Consul 服务中心
	base_init.GrpcServerConnectRegisterConsul(host, port, func(server *grpc.Server) {
		// 注册商品服务到 gRPC 服务器
		proto.RegisterGoodsServer(server, &handler.GoodsService{})
	}, &base_config.RegisterConsul{
		Consul:   global.NacosConfig.Consul,   //注册中心配置
		Register: global.NacosConfig.Register, //注册服务信息配置
	})
}
